package com.glsc.ngateway.oaflow.service;

import cn.hutool.core.util.StrUtil;
import com.glsc.ngateway.common.base.repo.oracle.ecology.WorkflowRequestbaseRepository;
import com.glsc.ngateway.oaflow.config.DataSourceSwitcher;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import static com.glsc.ngateway.oaflow.utils.Constant.PRIMARY_NODE;

@Service
public class SwitchDataSourceService {

    @Resource
    WorkflowRequestbaseRepository workflowRequestbaseRepository;

    @Resource
    OracleJdbcTemplate oracleJdbcTemplate;

    public String switchSecond() {
        try {
            DataSourceSwitcher.useSecondaryDataSource();
            return DataSourceSwitcher.getDataSource();
            // 执行使用备用数据源的数据库操作
        } finally {
//            执行后会回到默认数据源
            DataSourceSwitcher.clear();
        }

        // 默认使用主数据源执行其他操作
    }

    public String switchPrimary() {
        try {
            DataSourceSwitcher.usePrimaryDataSource();
//            Optional<WorkflowRequestbase> workflowRequestbase = workflowRequestbaseRepository.findByRequestid(1758564);
//            if(!workflowRequestbase.isEmpty()){
//                System.out.println(JSONObject.toJSONString(workflowRequestbase.get()));
//            }
            return DataSourceSwitcher.getDataSource();
            // 执行使用备用数据源的数据库操作
        } finally {
//            执行后会回到默认数据源
            DataSourceSwitcher.clear();
        }

        // 默认使用主数据源执行其他操作
    }

    public void switchSource(){
        //看看切换到什么状态，保持住这个状态
        if (StrUtil.equals(oracleJdbcTemplate.currentJdbc,PRIMARY_NODE)){
            switchPrimary();
//            jdbcTemplate = jdbcTemplateOracleSecond;
//            currentJdbc = "second";
        } else {
            switchSecond();
//            jdbcTemplate = jdbcTemplateOracle;
//            currentJdbc = "primary";
        }
    }
}